# For each..next

Kontrollsatsen for each..next är en konstruktion för skriptiteration som exekverar en eller flera satser för varje värde i en kommaavgränsad lista. Satserna inom slingan som innesluts av for och next exekveras för varje värde i listan.

Syntax:

En speciell syntax gör det möjligt att generera listor med namn på filer och mappar i den aktuella mappen.

for each var in list

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

next [var]

Argument:

For each-argument

| Argument | Beskrivning |
| --- | --- |
| var | Namnet på en skriptvariabel som får ett nytt värde från lista för varje exekvering av slingan. Om var anges efter next, måste variabelnamnet överensstämma med det variabelnamn som angivits efter motsvarande for each. |

Värdet på variabeln var kan ändras av satser inom slingan, men detta brukar inte göras inom programmering.

Om en exit for-sats påträffas i slingan flyttas skriptexekveringen till den första satsen efter next-satsen som markerar slutet på slingan. En exit for-sats kan göras villkorad genom det valbara användandet av ett when- eller unless-suffix.

Anteckning om informationEftersom for each..next-satsen är en kontrollsats, och som sådan slutar med ett semikolon eller radslut, måste var och en av dess tre möjliga komponenter (for each, exit for och next) rymmas på en egen rad i skriptet.

Syntax:

list := item { , item }

item := constant | (expression) | filelist (mask) | dirlist (mask) | fieldvaluelist (fieldname)

List-argument

| Argument | Beskrivning |
| --- | --- |
| constant | Valfritt tal eller valfri sträng Observera att en sträng som skrivs direkt i skriptet måste omslutas av enkla citattecken. En sträng utan enkla citattecken tolkas som en variabel och då används värdet för variabeln. Tal behöver inte omslutas av enkla citattecken. |
| expression | Ett godtyckligt uttryck. |
| mask | En fil- eller katalognamnsmask som får innehålla valfria giltiga filnamnstecken samt standardjokertecknen \* och ?. |
| condition | Ett logiskt uttryck som utvärderas till True eller False. |
| statements | Valfri grupp av en eller flera QlikView-skriptsatser. |
| filelist mask | Denna syntax skapar en kommaavgränsad lista över alla filer i den aktuella mappen som matchar filnamnsmasken. |
| dirlist mask | Denna syntax skapar en kommaavgränsad lista över alla kataloger i den aktuella katalog som matchar mappnamnsmasken. |
| fieldvaluelist mask | Syntaxen itererar genom värdena i ett fält som redan har laddats in i QlikView. |

Anteckning om varningQlik Kopplingar till webblagringsleverantörer och andra DataFiles-kopplingar stöder inte filtermasker som använder jokertecken (\* och ?).

Exempel 1: Ladda en fillista

```
// LOAD the files 1.csv, 3.csv, 7.csv and xyz.csv for each a in 1,3,7,'xyz'    LOAD * from file$(a).csv; next
```

Exempel 2: Skapa en fillista på disk

Detta exempel läser in en lista över alla QlikView-relaterade filer i en mapp.

```
 sub DoDir (Root)    for each Ext in 'qvw', 'qva', 'qvo', 'qvs', 'qvc', 'qvd'        for each File in filelist (Root&'\*.' &Ext)           LOAD              '$(File)' as Name,              FileSize( '$(File)' ) as Size,              FileTime( '$(File)' ) as FileTime          autogenerate 1;        next File     next Ext    for each Dir in dirlist (Root&'\*' )        call DoDir (Dir)     next Dir  end sub  call DoDir ('C:')
```

Exempel 3: Itererar genom värdena i ett fält

Det här exemplet itererar genom listan med laddade värden för FIELD och genererar ett nytt fält, NEWFIELD. För varje värde i FIELD skapas två NEWFIELD-poster.

```
 load * inline [ FIELD one two three ];  FOR Each a in FieldValueList('FIELD') LOAD '$(a)' &'-'&RecNo() as NEWFIELD AutoGenerate 2; NEXT a  
```

Den resulterande tabellen ser ut så här:

Example 3

| NEWFIELD |
| --- |
| one-1 |
| one-2 |
| two-1 |
| two-2 |
| three-1 |
| three-2 |

## Mer information

* [For..next](https://help.qlik.com/sv-SE/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptControlStatements/For.htm)
* [Next](https://help.qlik.com/sv-SE/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptControlStatements/Next.htm)
* [Exit](https://help.qlik.com/sv-SE/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptControlStatements/Exit.htm)